<?php
namespace app\admin\controller;
use app\admin\controller\Common; //引入Common控制器
use app\admin\model\Admin as adminModel;//引入并启别名,不然会和本类名冲突
use think\Db;  //引入Db类
use think\Paginator;  //引入分页类
class Admin extends Common
{

    //list页面
    public function lst()
    {
      $admin=new adminModel();//实例化一下adminModel
      // $res=$admin->select();
      //调用adminModel里的getAdmin方法,获取model里返回的查询出来的结果集
      $res=$admin->getAdmin();
      // dump($res);die;
      //第一个参数为别名,模拟里的也要写aa,$res是上面取出来的结果集

      $this->assign('res',$res);
      return view('list');
    }

    //方法一:控制器数据库操作
    // public function add()
    // {
    //   //判断一下是否有数据提交  有会返回bool(true)
    //   if(request()->isPost()){
    //     // dump(request()->isPost());die;  //打印断一下是否有数据提交  有会返回bool(true)
    //     // dump(request()->Post());die;  //打印request()的Post数据
    //     $data=input('post.'); //接收post过来的数据 这里是以数组形式的数据
    //        //把数据写入数据表里 添加成功后会返回受影响的行数 添加失败就会报错,没有返回值
    //     $res=db('admin')->insert($data);
    //     if($res){
    //       //如果$res有值说明添加成功就跳到list.html默认的返回页面是$_SERVER['HTTP_REFERER']
    //       $this->success('管理员添加成功!',url('list'));
    //       // $this->success('添加成功','list');//和上面效果一样
    //     }else{
    //       $this->error('管理员添加失败!');//错误页面的默认跳转页面是返回前一页，通常不需要设置
    //     }
    //     return;//如果有数据提交就不显示下面的add.thml模板了
    //   }
    //   // // 方法一:
    //   // // 默认就去找view/admin/目录里下找和它同名的文件,括号里的add.htm的可以省略,
    //   return view('add');
    // }

    //方法二:Model模型操作
    //add页面 思路判断是否有数据提交,没有就展示页面,有就接收数据,插入数据库,
    public function add(){
      if(!$_POST){
        return view('add');
      }else{
        $data=input('post.');
        //实例化Admin.php的Model类,并调用里面的addAdmin()方法并传值
        $admin=new adminModel();
        $res=$admin->addAdmin($data);
        if($res){
          $this->success('添加成功',url('admin/lst'));
        }else{
          $this->error('添加失败');
        }
      }
    }


    // //edit页面
    // //方法一:控制器数据库操作
    // public function edit($id){ //接收lst传过来的用户id
    //   $adminInfo=db('admin')->find($id);//查传参过来的用户信息
    //   //判断$adminInfo就不有能查出用户信息
    //   if (!$adminInfo) {
    //     $this->error('管理员不存在');
    //     return;
    //   }
    //   if(!request()->isPost()){ //判断没有数据提交走这里,有就走下面
    //     $this->assign('adminInfo',$adminInfo);//传值给view
    //     return view('edit'); //展示页面
    //   }else{
    //       // dump(request()->post());
    //       $data=input('post.');  //接收edit.html form提交过来的id信息,
    //
    //       if(!$data['name']){ //如果用户名为空就报错
    //         $this->error('用户名不能为空');
    //         return;
    //       }
    //       if (!$data['password']) {  //判断没有密码提交过来
    //         $data['password']=$adminInfo['password']; //把数据库里的密码赋值给$data数组里
    //       }else{
    //         $data['password']=md5($data['password']); //有数据提交过来就加密码一下再赋值给数组
    //       }
    //       $res=db('admin')->where('id',$id)->update($data);//修改信息 如果$data里有id值了,where条件可以不写
    //       if ($res) {
    //         $this->success('修改成功',url('lst'));
    //       }else{
    //         $this->error('修改失败');
    //       }
    //   }
    // }
    //方法二:Model模型操作
      public function edit($id){ //接收lst传入的用户id
        $edit=new adminModel(); //实例化adminModel
        $adminInfo=$edit->edit($id); // 实例货里里的edit方法
        if($adminInfo==false){  //如果返回的是false,就报不存在的错误
          $this->error('管理员不存在');
          die;//并停止下面的代码
        }
        // dump($adminInfo);die;
        //如果接收到是是查询到的用户数据就赋值给view模板,展示在form表单里
        $this->assign('adminInfo',$adminInfo);

        if(!request()->isPost()){ //判断没有数据提交
            return view('edit');  //就展示模板
        }else {
            $data=input('post.');  //没有数据提交就设计模型里的editPost方法
            //把接收到表单信息传和上次查到的信息传给模型层
            $res=$edit->editPost($data,$adminInfo);
            if ($res==0){  //如果返回结果是0就报用户名不能为空
              $this->error('用户名不能为空!!');
            }

            if ($res==1){  //判断返回1 就修改成功
              $this->success('修改成功!!',url('lst'));
            }
            if($res==2){  //判断返回 0 就修改失败
              $this->error('修改失败!!');
            }

        }


      }

    //del

    //方法一:控制器数据库操作
    // public function del($id){
    //   $res=db('admin')->delete($id);
    //   if($res){
    //     $this->success('删除成功!!!',url('lst'));
    //   }else{
    //     $this->error('删除失败!!!');
    //   }
    //
    // }
    //方法二:Model模型操作
    public function del($id){
        $admin=new adminModel();//实例化model
        $row=$admin->del($id);//调用并传参给调用的方法
        //根据返回的值判断是否删除成功 返回true / 1 或者false / 0
        if ($row) {
          $this->success('删除成功',url('lst'));
        }else{
          $this->error('删除失败');
        }
    }


    //退出登陆
    public function logOut(){
      $logOutModel=new adminModel;//实例化model
      $res=$logOutModel->logOut();//调用并传参给调用的方法
      if($res==1){  //判断返回的数据等于1时成功退出
        $this->success('成功退出','login/index');
      }
    }











}
